import { Response } from 'express'
import createError from 'http-errors'

/**
 * 请求成功
 * @param res
 * @param message
 * @param data
 * @param code
 */
export function success<T>(res: Response, message: string, data: T = {} as T, code: number = 200) {
  // 服务器返回对象数据给前台
  // 默认状态码200，可省略 .status(200)
  res.status(code).json({
    code,
    message,
    data
  })
}

/**
 * 请求失败
 * @param res
 * @param error
 */
export function failure(res: Response, error: Error): void {
  let code = 500 // 默认状态码，表示服务器错误
  let errors = "服务器错误"

  if (error.name === "JsonWebTokenError" || error.name === "TokenExpiredError") { // token验证错误
    code = 401
    errors = "您提交的 token 错误或已过期"
  } else if (error instanceof createError.HttpError) { // http-errors库创建的错误
    code = error.status
    errors = error.message
  }

  res.status(code).json({
    code,
    message: `请求失败：${error.name}`,
    errors: [errors]
  })
}

